1. Field of the Invention
The present invention relates to computer software, and more particularly to storage and retrieval of multiple types of measurement streams.
2. Description of the Related Art
Various measurement devices may provide different measurement streams (e.g., value-time pairs, data acquisition (DAQ) data). Typically, separate software application programs are required to process different types of measurement data (e.g., different measurement streams). Conventional database configuration typically implies that certain characteristics (e.g., persistence (storage on disk), caching, replication, networking, security) are dependent upon the type of data stored in the database. It is desirable to have robust software application programs that are able to process multiple types of measurement data using a shared code base. Benefits of a shared code base may include a smaller footprint (i.e., code size) and ease of maintenance.
For the foregoing reasons, there is a need for a system and method for modular storage of multiple types of measurement streams (i.e., input data).
The present invention provides various embodiments of a system, method, and medium for modular storage of measurement streams using a hierarchy of stream-processing objects.
A first application may log or write first measurement data to a shared memory location on a first computer system. The first measurement data may include one or more types of measurement data (e.g., live data acquired from a data acquisition device; waveform data; single-point data, wherein single-point data comprises a data value and a data timestamp; alarm data; event data, among others). The first application program may receive measurement data of a plurality of data types from a plurality of measurement devices prior to logging or writing or storing the first measurement data. The storing of the first measurement data may be independent of the data type of the measurement data.
The first application may include a plurality of first filter objects which operate to log the first measurement data. The plurality of first filter objects may include a hierarchy of first stream processing objects.
Logging may include receiving the first measurement data from a first measurement device, and storing the first measurement data in the shared memory location. Typically, the shared memory location is stored in a volatile memory. Storing the first measurement data may include storing the first measurement data in the shared memory location and storing an index to the first measurement data, wherein the index is also stored in the shared memory location.
A second application may trend, read, or retrieve the first measurement data, or at least a subset of the first measurement data, from the shared memory location on the first computer system substantially concurrently as the first measurement data is logged to the shared memory location on the first computer system by the first application.
Similar to the first application, the second application may include a plurality of second filter objects which operate to trend the first measurement data. The plurality of second filter objects may include a hierarchy of second stream processing objects. The plurality of first filter objects and the plurality of second filter objects may share filter objects.
Trending may include: (1) generating a query for the first measurement data stored in the shared memory location; (2) determining the location of the first measurement data in the shared memory using the index of the first measurement data; (3) accessing the first measurement data from the shared memory; and (4) displaying the first measurement data on a display.
The first measurement data stored in the shared memory location of the first computer system may be replicated to an archival database. The replication of the first measurement data may be independent of the type of measurement data. Thus, the replication may not require a version of the application software able to read and/or write any type of measurement data (i.e., the first application or the second application). When updated software to support a new data type for at least one of the first application and the second application is installed on the first computer system, the replication of the first measurement data may support the new data type without modification.
The archival database may be stored on the first computer system. Alternatively, the archival database may be stored on a second computer system, the second computer system being coupled to the first computer system via a network.
The second computer system may transmit the replicated data to a plurality of computer systems. Similarly, in the case where the archival database is stored on the first computer system, the first computer system may transmit the replicated data to a plurality of computer systems.